#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdint.h>
#include <sys/timerfd.h>
#include "reactor.hpp"
// int main()
// {
//     int timefd = timerfd_create(CLOCK_MONOTONIC,0);
//     if(timefd<0)
//     {
//         perror("timerfd_create error");
//         return -1;
//     }

//     struct itimerspec itme;
//     itme.it_value.tv_sec=1;
//     itme.it_value.tv_nsec=0;//第一次超时时间
//     itme.it_interval.tv_sec=1;
//     itme.it_interval.tv_nsec=0;//间隔时间
//     timerfd_settime(timefd, 0, &itme, nullptr);//设置超时时间间隔
//     while(true)
//     {
//         uint64_t time=0;
//         int ret=read(timefd,&time,sizeof(time));
//         if(ret<0)
//         {
//             perror("read error");
//             return -1;
//         }
//         else if(ret == 0)
//         {
//             return 0;
//         }
//         else 
//         {
//             printf("超时了，距离上一次超时了%ld次\n", time++);
//         }
//     }
//     close(timefd);
//     return 0;
// }
void DefaultOnMessage(std::weak_ptr<Connection> conn)
{
    if(conn.expired()) return;
    auto connection_ptr = conn.lock();
    // 对报文进行处理，有bug
    std::cout << "上层得到了数据： " << connection_ptr->Inbuffer() << std::endl;
    //std::string response_str = calculator.Handler(connection_ptr->Inbuffer()); // 我们的业务逻辑比较简单，没有特别耗时的操作
   // if(response_str.empty()) return;
    // lg(Debug, "%s", response_str.c_str());
    // // response_str 发送出去
    // connection_ptr->AppendOutBuffer(response_str);
    // // 正确的理解发送？
    // // connection_ptr->_send_cb(connection_ptr);
    
    // auto tcpserver = connection_ptr->_tcp_server_ptr.lock();
    // tcpserver->Sender(connection_ptr);
}
int main()
{
    std::shared_ptr<TcpServer> epoll_svr(new TcpServer(8888, DefaultOnMessage));
    epoll_svr->Init();
    epoll_svr->Loop();
    return 0;
}
